package leistungsbewertung;

import java.util.Vector;

/**
 * o Mit einem diskreten Simulationszeitpunkt assoziiert
 * 
 *  Beispiele: nächste Paketankunft, nächstes Bedienende
 * 
 * o Führt zu diesem Zeitpunkt eine Event Routine aus, die eine Aktion im System
 * verursachen, z.B. den System State verändern kann.
 * 
 * o Verwaltung in der Event Chain (Ereignisliste)
 */
public class Event {

	private boolean isArrival;

	public Event(boolean isArrival) {
		this.isArrival = isArrival;

	}

	public void customerArrival(Customer c) {
//asd
		while (c.getArrivalTime() - Bib.tic > 0) {
			try {
				Thread.sleep(1000);
				c.decrementArrivalTimie();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}

		}
		System.out.println("Customer Added to Q");
		this.addCustomer(c);

	}

	// schlange abarbeiten
	public void serviceCompletion(Customer c) {
		// Bib.serverReady = false;
		// System.out.println("Server is not Ready");
		while (c.getCompletionTime() - Bib.tic > 0) {
			c.decrementCompletionTime();
		}
		this.removeCustomer();
		System.out.println("Customer Served");
		// Bib.serverReady = true;
		// System.out.println("Server is now Ready");
	}

	public void simulationTermination() {
		System.out.println(" S Y S T E M T E R M I N A T I O N B O Y S");

	}

	public boolean isArrival() {
		return isArrival;
	}

	public void setArrival(boolean isArrival) {
		this.isArrival = isArrival;
	}

	public void addCustomer(Customer c) {
		Bib.q.add(c);

	}

	public void removeCustomer() {
		Bib.q.remove(0);
	}

}
